package cn.imvc.data.jpa.repository;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface ISqlExecutor<T> {
	
	<E> List<E> findAllSql(String sql, Class<E> clazz);

	List<Object[]> findAllSql(String sql);

	<E> Page<E> findAllSql(String sql,Pageable pageable, Class<E> clazz);
	
	Page<Object[]> findAllSql(String sql,Pageable pageable);
	/**
	 * 排序可以放在pageable对象中，只支持sql中出现的字段排序
	 * @param sql
	 * @param args
	 * @param pageable
	 * @return
	 */
	Page<Object[]> findPageResultBySql(String sql,Object[] args,Pageable pageable);
	
	void updateSql(String sql);
}
